package br.com.guardaroupavirtual.dao;

import java.util.List;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import br.com.guardaroupavirtual.model.Produto;

public class ProdutoDAO extends BaseDAO<Produto>{

	public ProdutoDAO(Session session) {
		super(session, Produto.class);
	}

	@SuppressWarnings("unchecked")
	public List<Produto> getProdutosByCategoria(int id){
		Criteria c = this.session.createCriteria(Produto.class)
				.createCriteria("categoria")
				.add(Restrictions.eq("id", id));
		
		return (List<Produto>) c.list();
	}
	
	@SuppressWarnings("unchecked")
	public List<Produto> getProdutosByFiltro(Map<String, String> parametros){
		Criteria c = this.session.createCriteria(Produto.class);
		if(parametros.get("sexo") != null && !parametros.get("sexo").isEmpty()){
			c.add(Restrictions.eq("sexo", parametros.get("sexo")));
		}
		if(parametros.get("medida") != null && !parametros.get("medida").isEmpty()){
			c.add(Restrictions.eq("medida", parametros.get("medida")));
		}		
		if(parametros.get("categoriaID") != null && !parametros.get("categoriaID").isEmpty()){		
			c.createCriteria("categoria")
			.add(Restrictions.eq("id", Integer.parseInt(parametros.get("categoriaID"))));
		}
		if(parametros.get("lookEventoID") != null && !parametros.get("lookEventoID").isEmpty()){		
			c.createCriteria("lookEvento")
			.add(Restrictions.eq("id", Integer.parseInt(parametros.get("lookEventoID"))));
		}		
		return (List<Produto>) c.list();
	}	
	
}
